<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NVTX C API Reference: Memory</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">NVTX C API Reference<span id="projectnumber">&#160;v3</span>
   </div>
   <div id="projectbrief">NVIDIA Tools Extension Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">Memory</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionnvtx_mem_region_ref__t.html">nvtxMemRegionRef_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A reference to a memory region (by pointer or handle). Which member of the union will be determined by a type or flag field outside.  <a href="unionnvtx_mem_region_ref__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_virtual_range_desc__v1.html">nvtxMemVirtualRangeDesc_v1</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_v1</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">structure to describe a heap in process virtual memory.  <a href="structnvtx_mem_heap_desc__v1.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_regions_register_batch__v1.html">nvtxMemRegionsRegisterBatch_v1</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a region of memory inside of a heap.  <a href="structnvtx_mem_regions_register_batch__v1.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_regions_resize_batch__v1.html">nvtxMemRegionsResizeBatch_v1</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a region of memory inside of a heap.  <a href="structnvtx_mem_regions_resize_batch__v1.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_v1</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a region of memory inside of a heap.  <a href="structnvtx_mem_regions_unregister_batch__v1.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_region_name_desc__v1.html">nvtxMemRegionNameDesc_v1</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_regions_name_batch__v1.html">nvtxMemRegionsNameBatch_v1</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_permissions_assign_region_desc__v1.html">nvtxMemPermissionsAssignRegionDesc_v1</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnvtx_mem_permissions_assign_batch__v1.html">nvtxMemPermissionsAssignBatch_v1</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga1abeb15def646b97b7df002f48c77131" id="r_ga1abeb15def646b97b7df002f48c77131"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga1abeb15def646b97b7df002f48c77131">NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE</a>&#160;&#160;&#160;(NVTX_STATIC_CAST(<a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a>, 0))</td></tr>
<tr class="memdesc:ga1abeb15def646b97b7df002f48c77131"><td class="mdescLeft">&#160;</td><td class="mdescRight">To indicate the full process virtual address space as a heap for functions where a nvtxMemHeapHandle_t is accepted.  <br /></td></tr>
<tr class="separator:ga1abeb15def646b97b7df002f48c77131"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabfc4a973ce7aae0f6bc85758491dffb2" id="r_gabfc4a973ce7aae0f6bc85758491dffb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gabfc4a973ce7aae0f6bc85758491dffb2">NVTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="memdesc:gabfc4a973ce7aae0f6bc85758491dffb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This heap is a sub-allocator.  <br /></td></tr>
<tr class="separator:gabfc4a973ce7aae0f6bc85758491dffb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac61e78dbf1f2c0041d339d218593e6b6" id="r_gac61e78dbf1f2c0041d339d218593e6b6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gac61e78dbf1f2c0041d339d218593e6b6">NVTX_MEM_HEAP_USAGE_TYPE_LAYOUT</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="memdesc:gac61e78dbf1f2c0041d339d218593e6b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a heap of memory that has an explicit layout.  <br /></td></tr>
<tr class="separator:gac61e78dbf1f2c0041d339d218593e6b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac19a1d873ae0892b29100597a31d1255" id="r_gac19a1d873ae0892b29100597a31d1255"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gac19a1d873ae0892b29100597a31d1255">NVTX_MEM_TYPE_VIRTUAL_ADDRESS</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="memdesc:gac19a1d873ae0892b29100597a31d1255"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard process userspace virtual addresses for linear allocations.  <br /></td></tr>
<tr class="separator:gac19a1d873ae0892b29100597a31d1255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga529a4119f1d3993b26475d561dfffb8d" id="r_ga529a4119f1d3993b26475d561dfffb8d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga529a4119f1d3993b26475d561dfffb8d">NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE</a>&#160;&#160;&#160;(NVTX_STATIC_CAST(<a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a>, 0))</td></tr>
<tr class="memdesc:ga529a4119f1d3993b26475d561dfffb8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">To indicate you are modifying permissions to the process-wide full virtual address space.  <br /></td></tr>
<tr class="separator:ga529a4119f1d3993b26475d561dfffb8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2837d09d1024664ac71218155c7ee405" id="r_ga2837d09d1024664ac71218155c7ee405"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga2837d09d1024664ac71218155c7ee405">NVTX_MEM_PERMISSIONS_CREATE_FLAGS_NONE</a>&#160;&#160;&#160;0x0</td></tr>
<tr class="separator:ga2837d09d1024664ac71218155c7ee405"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6070918bf383e5792cb16a01c14398fb" id="r_ga6070918bf383e5792cb16a01c14398fb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga6070918bf383e5792cb16a01c14398fb">NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="separator:ga6070918bf383e5792cb16a01c14398fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae692c24c1518405de001663d6a9501d1" id="r_gae692c24c1518405de001663d6a9501d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gae692c24c1518405de001663d6a9501d1">NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="separator:gae692c24c1518405de001663d6a9501d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6d2ce0849d6670b3d47d3d75b30625c9" id="r_ga6d2ce0849d6670b3d47d3d75b30625c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga6d2ce0849d6670b3d47d3d75b30625c9">NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_ATOMIC</a>&#160;&#160;&#160;0x4</td></tr>
<tr class="separator:ga6d2ce0849d6670b3d47d3d75b30625c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad605b53dfb56232e65fbe5e56fb65dae" id="r_gad605b53dfb56232e65fbe5e56fb65dae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gad605b53dfb56232e65fbe5e56fb65dae">NVTX_MEM_REGION_REF_TYPE_UNKNOWN</a>&#160;&#160;&#160;0x0</td></tr>
<tr class="separator:gad605b53dfb56232e65fbe5e56fb65dae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6559423352bc401024ecb38775ab5882" id="r_ga6559423352bc401024ecb38775ab5882"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga6559423352bc401024ecb38775ab5882">NVTX_MEM_REGION_REF_TYPE_POINTER</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="separator:ga6559423352bc401024ecb38775ab5882"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf8eb39d0ca996daab8b02a744d7030da" id="r_gaf8eb39d0ca996daab8b02a744d7030da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaf8eb39d0ca996daab8b02a744d7030da">NVTX_MEM_REGION_REF_TYPE_HANDLE</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="separator:gaf8eb39d0ca996daab8b02a744d7030da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7044cd91b86ad1df236cebbeb60f145a" id="r_ga7044cd91b86ad1df236cebbeb60f145a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga7044cd91b86ad1df236cebbeb60f145a">NVTX_MEM_PERMISSIONS_REGION_FLAGS_NONE</a>&#160;&#160;&#160;0x0</td></tr>
<tr class="memdesc:ga7044cd91b86ad1df236cebbeb60f145a"><td class="mdescLeft">&#160;</td><td class="mdescRight">There are no permissions for this memory.  <br /></td></tr>
<tr class="separator:ga7044cd91b86ad1df236cebbeb60f145a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8179ca8c39916932114f24bd8f212368" id="r_ga8179ca8c39916932114f24bd8f212368"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga8179ca8c39916932114f24bd8f212368">NVTX_MEM_PERMISSIONS_REGION_FLAGS_READ</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="memdesc:ga8179ca8c39916932114f24bd8f212368"><td class="mdescLeft">&#160;</td><td class="mdescRight">The memory is readable.  <br /></td></tr>
<tr class="separator:ga8179ca8c39916932114f24bd8f212368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7fbc2145e4b3e4065b430302264beef3" id="r_ga7fbc2145e4b3e4065b430302264beef3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga7fbc2145e4b3e4065b430302264beef3">NVTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="memdesc:ga7fbc2145e4b3e4065b430302264beef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The memory is writable.  <br /></td></tr>
<tr class="separator:ga7fbc2145e4b3e4065b430302264beef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45057347a87905989c781bfe5ff58740" id="r_ga45057347a87905989c781bfe5ff58740"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga45057347a87905989c781bfe5ff58740">NVTX_MEM_PERMISSIONS_REGION_FLAGS_ATOMIC</a>&#160;&#160;&#160;0x4</td></tr>
<tr class="memdesc:ga45057347a87905989c781bfe5ff58740"><td class="mdescLeft">&#160;</td><td class="mdescRight">The memory is for atomic RW.  <br /></td></tr>
<tr class="separator:ga45057347a87905989c781bfe5ff58740"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9cd2b522932416c8b526d53d9c51ecb6" id="r_ga9cd2b522932416c8b526d53d9c51ecb6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga9cd2b522932416c8b526d53d9c51ecb6">NVTX_MEM_PERMISSIONS_REGION_FLAGS_RESET</a>&#160;&#160;&#160;0x8</td></tr>
<tr class="memdesc:ga9cd2b522932416c8b526d53d9c51ecb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The memory access permissions are reset for a region.  <br /></td></tr>
<tr class="separator:ga9cd2b522932416c8b526d53d9c51ecb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6354421b6134639e6f43674fcc1267d7" id="r_ga6354421b6134639e6f43674fcc1267d7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga6354421b6134639e6f43674fcc1267d7">NVTX_MEM_PERMISSIONS_BIND_FLAGS_NONE</a>&#160;&#160;&#160;0x0</td></tr>
<tr class="separator:ga6354421b6134639e6f43674fcc1267d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafc19b9b4a2a897e419b1f3dce50b34a8" id="r_gafc19b9b4a2a897e419b1f3dce50b34a8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gafc19b9b4a2a897e419b1f3dce50b34a8">NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_WRITE</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="memdesc:gafc19b9b4a2a897e419b1f3dce50b34a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upon binding, with the thread, exclude parent scope write regions instead of overlaying on top of them.  <br /></td></tr>
<tr class="separator:gafc19b9b4a2a897e419b1f3dce50b34a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga160040e9f3eae923985ca853a8c8b121" id="r_ga160040e9f3eae923985ca853a8c8b121"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga160040e9f3eae923985ca853a8c8b121">NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_READ</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="memdesc:ga160040e9f3eae923985ca853a8c8b121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upon binding, with the thread, exclude parent scope read regions instead of overlaying on top of them.  <br /></td></tr>
<tr class="separator:ga160040e9f3eae923985ca853a8c8b121"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab37b7d7751e95a681f5faa793e8167e9" id="r_gab37b7d7751e95a681f5faa793e8167e9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gab37b7d7751e95a681f5faa793e8167e9">NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_ATOMIC</a>&#160;&#160;&#160;0x4</td></tr>
<tr class="memdesc:gab37b7d7751e95a681f5faa793e8167e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upon binding, with the thread, exclude parent scope atomic RW regions instead of overlaying on top of them.  <br /></td></tr>
<tr class="separator:gab37b7d7751e95a681f5faa793e8167e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87975ae01457c1114ebad7dcb4b88c5f" id="r_ga87975ae01457c1114ebad7dcb4b88c5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga87975ae01457c1114ebad7dcb4b88c5f">NVTX_MEM_PERMISSIONS_BIND_SCOPE_UNKNOWN</a>&#160;&#160;&#160;0x0</td></tr>
<tr class="separator:ga87975ae01457c1114ebad7dcb4b88c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf34edbf4ff61c7e8ab4d0a6da9153636" id="r_gaf34edbf4ff61c7e8ab4d0a6da9153636"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaf34edbf4ff61c7e8ab4d0a6da9153636">NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD</a>&#160;&#160;&#160;0x1</td></tr>
<tr class="memdesc:gaf34edbf4ff61c7e8ab4d0a6da9153636"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bind to thread scope. In this case, tools should validate that local thread's execution is honoring the permissions as well as the state of NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE at the time of binding. If this is not bound then NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE should be used to validate the memory.  <br /></td></tr>
<tr class="separator:gaf34edbf4ff61c7e8ab4d0a6da9153636"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2f9d2a62337fac1f9c1b753da2e3977" id="r_gaa2f9d2a62337fac1f9c1b753da2e3977"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaa2f9d2a62337fac1f9c1b753da2e3977">NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM</a>&#160;&#160;&#160;0x2</td></tr>
<tr class="memdesc:gaa2f9d2a62337fac1f9c1b753da2e3977"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bind to CUDA stream scope.  <br /></td></tr>
<tr class="separator:gaa2f9d2a62337fac1f9c1b753da2e3977"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga7fc8355410f6b30baebc184d29fa21f4" id="r_ga7fc8355410f6b30baebc184d29fa21f4"><td class="memItemLeft" align="right" valign="top">typedef nvtxMemHeap_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a></td></tr>
<tr class="memdesc:ga7fc8355410f6b30baebc184d29fa21f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">A handle returned by a tool to represent a memory heap.  <br /></td></tr>
<tr class="separator:ga7fc8355410f6b30baebc184d29fa21f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc058b02998bde14517ea665f62495e0" id="r_gabc058b02998bde14517ea665f62495e0"><td class="memItemLeft" align="right" valign="top">typedef nvtxMemRegion_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gabc058b02998bde14517ea665f62495e0">nvtxMemRegionHandle_t</a></td></tr>
<tr class="memdesc:gabc058b02998bde14517ea665f62495e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">A handle returned by a tool to represent a memory region.  <br /></td></tr>
<tr class="separator:gabc058b02998bde14517ea665f62495e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga421ec4c6d96c342008aa3d04906643f0" id="r_ga421ec4c6d96c342008aa3d04906643f0"><td class="memItemLeft" align="right" valign="top">typedef nvtxMemPermissions_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a></td></tr>
<tr class="memdesc:ga421ec4c6d96c342008aa3d04906643f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">A handle returned by a tool to represent a memory permissions mask.  <br /></td></tr>
<tr class="separator:ga421ec4c6d96c342008aa3d04906643f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7722d1f9cca078acc29dafbdc5f598de" id="r_ga7722d1f9cca078acc29dafbdc5f598de"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_virtual_range_desc__v1.html">nvtxMemVirtualRangeDesc_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga7722d1f9cca078acc29dafbdc5f598de">nvtxMemVirtualRangeDesc_t</a></td></tr>
<tr class="separator:ga7722d1f9cca078acc29dafbdc5f598de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga867aaad21c9b037b83689d9635f03ebd" id="r_ga867aaad21c9b037b83689d9635f03ebd"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga867aaad21c9b037b83689d9635f03ebd">nvtxMemHeapDesc_t</a></td></tr>
<tr class="separator:ga867aaad21c9b037b83689d9635f03ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb217715fd36841ea0ba6ded10c72d56" id="r_gaeb217715fd36841ea0ba6ded10c72d56"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_regions_register_batch__v1.html">nvtxMemRegionsRegisterBatch_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaeb217715fd36841ea0ba6ded10c72d56">nvtxMemRegionsRegisterBatch_t</a></td></tr>
<tr class="separator:gaeb217715fd36841ea0ba6ded10c72d56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaa84a28e93d7b1725a3f513bc277e828" id="r_gaaa84a28e93d7b1725a3f513bc277e828"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_regions_resize_batch__v1.html">nvtxMemRegionsResizeBatch_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaaa84a28e93d7b1725a3f513bc277e828">nvtxMemRegionsResizeBatch_t</a></td></tr>
<tr class="separator:gaaa84a28e93d7b1725a3f513bc277e828"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2bb003e73110c8c1889ae32d06adf5a" id="r_gaa2bb003e73110c8c1889ae32d06adf5a"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaa2bb003e73110c8c1889ae32d06adf5a">nvtxMemRegionsUnregisterBatch_t</a></td></tr>
<tr class="separator:gaa2bb003e73110c8c1889ae32d06adf5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadc3d8fcd45db93799065cde47c1e81e5" id="r_gadc3d8fcd45db93799065cde47c1e81e5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_region_name_desc__v1.html">nvtxMemRegionNameDesc_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gadc3d8fcd45db93799065cde47c1e81e5">nvtxMemRegionNameDesc_t</a></td></tr>
<tr class="separator:gadc3d8fcd45db93799065cde47c1e81e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad832c4d41d8348b2b9994f0d57813aae" id="r_gad832c4d41d8348b2b9994f0d57813aae"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_regions_name_batch__v1.html">nvtxMemRegionsNameBatch_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gad832c4d41d8348b2b9994f0d57813aae">nvtxMemRegionsNameBatch_t</a></td></tr>
<tr class="separator:gad832c4d41d8348b2b9994f0d57813aae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa872dd921b4d004f4be7e444062d706a" id="r_gaa872dd921b4d004f4be7e444062d706a"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_permissions_assign_region_desc__v1.html">nvtxMemPermissionsAssignRegionDesc_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gaa872dd921b4d004f4be7e444062d706a">nvtxMemPermissionsAssignRegionDesc_t</a></td></tr>
<tr class="separator:gaa872dd921b4d004f4be7e444062d706a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c092ef2b3b68bf29bc1e2295e7b3233" id="r_ga1c092ef2b3b68bf29bc1e2295e7b3233"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structnvtx_mem_permissions_assign_batch__v1.html">nvtxMemPermissionsAssignBatch_v1</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga1c092ef2b3b68bf29bc1e2295e7b3233">nvtxMemPermissionsAssignBatch_t</a></td></tr>
<tr class="separator:ga1c092ef2b3b68bf29bc1e2295e7b3233"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6c059f5891bb02717a7453947b6a459a" id="r_ga6c059f5891bb02717a7453947b6a459a"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC <a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a> NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga6c059f5891bb02717a7453947b6a459a">nvtxMemHeapRegister</a> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_t</a> const *desc)</td></tr>
<tr class="memdesc:ga6c059f5891bb02717a7453947b6a459a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a memory heap to represent a object or range of memory that will be further sub-divided into regions.  <br /></td></tr>
<tr class="separator:ga6c059f5891bb02717a7453947b6a459a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaffa94cc4bbb746abdcb80cc8152122b" id="r_gaaffa94cc4bbb746abdcb80cc8152122b"><td class="memItemLeft" align="right" valign="top"><a id="gaaffa94cc4bbb746abdcb80cc8152122b" name="gaaffa94cc4bbb746abdcb80cc8152122b"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemHeapUnregister</b> (nvtxDomainHandle_t domain, <a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a> heap)</td></tr>
<tr class="memdesc:gaaffa94cc4bbb746abdcb80cc8152122b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a memory heap. <br /></td></tr>
<tr class="separator:gaaffa94cc4bbb746abdcb80cc8152122b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38b92bad53d38a16b27efc9b36dc4594" id="r_ga38b92bad53d38a16b27efc9b36dc4594"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga38b92bad53d38a16b27efc9b36dc4594">nvtxMemHeapReset</a> (nvtxDomainHandle_t domain, <a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a> heap)</td></tr>
<tr class="memdesc:ga38b92bad53d38a16b27efc9b36dc4594"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the memory heap wipes out any changes, as if it were a fresh heap.  <br /></td></tr>
<tr class="separator:ga38b92bad53d38a16b27efc9b36dc4594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga266c4042ae7bb9d0cb1412d8e43c94dd" id="r_ga266c4042ae7bb9d0cb1412d8e43c94dd"><td class="memItemLeft" align="right" valign="top"><a id="ga266c4042ae7bb9d0cb1412d8e43c94dd" name="ga266c4042ae7bb9d0cb1412d8e43c94dd"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemRegionsRegister</b> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_regions_register_batch__v1.html">nvtxMemRegionsRegisterBatch_t</a> const *desc)</td></tr>
<tr class="memdesc:ga266c4042ae7bb9d0cb1412d8e43c94dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a region of memory inside of a heap of linear process virtual memory. <br /></td></tr>
<tr class="separator:ga266c4042ae7bb9d0cb1412d8e43c94dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a2b1ed502847e16838b81904bf7aa34" id="r_ga1a2b1ed502847e16838b81904bf7aa34"><td class="memItemLeft" align="right" valign="top"><a id="ga1a2b1ed502847e16838b81904bf7aa34" name="ga1a2b1ed502847e16838b81904bf7aa34"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemRegionsResize</b> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_regions_resize_batch__v1.html">nvtxMemRegionsResizeBatch_t</a> const *desc)</td></tr>
<tr class="memdesc:ga1a2b1ed502847e16838b81904bf7aa34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a region of memory inside of a heap of linear process virtual memory. <br /></td></tr>
<tr class="separator:ga1a2b1ed502847e16838b81904bf7aa34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga040347db8e2035482a74bcdf5ee25bb0" id="r_ga040347db8e2035482a74bcdf5ee25bb0"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga040347db8e2035482a74bcdf5ee25bb0">nvtxMemRegionsUnregister</a> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_t</a> const *desc)</td></tr>
<tr class="memdesc:ga040347db8e2035482a74bcdf5ee25bb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregistration for regions of process virtual memory.  <br /></td></tr>
<tr class="separator:ga040347db8e2035482a74bcdf5ee25bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab84b9d1a9806c804a346484305e05ec3" id="r_gab84b9d1a9806c804a346484305e05ec3"><td class="memItemLeft" align="right" valign="top"><a id="gab84b9d1a9806c804a346484305e05ec3" name="gab84b9d1a9806c804a346484305e05ec3"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemRegionsName</b> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_regions_name_batch__v1.html">nvtxMemRegionsNameBatch_t</a> const *desc)</td></tr>
<tr class="memdesc:gab84b9d1a9806c804a346484305e05ec3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name or rename a region. <br /></td></tr>
<tr class="separator:gab84b9d1a9806c804a346484305e05ec3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad860d7160178c8304d4e5e5c1576ec20" id="r_gad860d7160178c8304d4e5e5c1576ec20"><td class="memItemLeft" align="right" valign="top"><a id="gad860d7160178c8304d4e5e5c1576ec20" name="gad860d7160178c8304d4e5e5c1576ec20"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemPermissionsAssign</b> (nvtxDomainHandle_t domain, <a class="el" href="structnvtx_mem_permissions_assign_batch__v1.html">nvtxMemPermissionsAssignBatch_t</a> const *desc)</td></tr>
<tr class="memdesc:gad860d7160178c8304d4e5e5c1576ec20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change the permissions of a region of process virtual memory. <br /></td></tr>
<tr class="separator:gad860d7160178c8304d4e5e5c1576ec20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f855ed95bf9473f6e53d1faf1fc247e" id="r_ga1f855ed95bf9473f6e53d1faf1fc247e"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a> NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga1f855ed95bf9473f6e53d1faf1fc247e">nvtxMemPermissionsCreate</a> (nvtxDomainHandle_t domain, int32_t creationflags)</td></tr>
<tr class="memdesc:ga1f855ed95bf9473f6e53d1faf1fc247e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a permissions object for fine grain thread-local control in multi-threading scenarios.  <br /></td></tr>
<tr class="separator:ga1f855ed95bf9473f6e53d1faf1fc247e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7494b21c8738c23941222432134e35d3" id="r_ga7494b21c8738c23941222432134e35d3"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga7494b21c8738c23941222432134e35d3">nvtxMemPermissionsDestroy</a> (nvtxDomainHandle_t domain, <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a> permissionsHandle)</td></tr>
<tr class="memdesc:ga7494b21c8738c23941222432134e35d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the permissions object.  <br /></td></tr>
<tr class="separator:ga7494b21c8738c23941222432134e35d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf397b686b8a407f4095897a891d4114" id="r_gaaf397b686b8a407f4095897a891d4114"><td class="memItemLeft" align="right" valign="top"><a id="gaaf397b686b8a407f4095897a891d4114" name="gaaf397b686b8a407f4095897a891d4114"></a>
NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><b>nvtxMemPermissionsReset</b> (nvtxDomainHandle_t domain, <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a> permissionsHandle)</td></tr>
<tr class="memdesc:gaaf397b686b8a407f4095897a891d4114"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the permissions object back to its created state. <br /></td></tr>
<tr class="separator:gaaf397b686b8a407f4095897a891d4114"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga590cf0b684dee2f60df844163b48efe9" id="r_ga590cf0b684dee2f60df844163b48efe9"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#ga590cf0b684dee2f60df844163b48efe9">nvtxMemPermissionsBind</a> (nvtxDomainHandle_t domain, <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a> permissions, uint32_t bindScope, uint32_t bindFlags)</td></tr>
<tr class="memdesc:ga590cf0b684dee2f60df844163b48efe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bind the permissions object into a particular scope on the caller thread.  <br /></td></tr>
<tr class="separator:ga590cf0b684dee2f60df844163b48efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad89c5d699ca976a617511ba3cf7f2fdc" id="r_gad89c5d699ca976a617511ba3cf7f2fdc"><td class="memItemLeft" align="right" valign="top">NVTX_DECLSPEC void NVTX_API&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___m_e_m_o_r_y.html#gad89c5d699ca976a617511ba3cf7f2fdc">nvtxMemPermissionsUnbind</a> (nvtxDomainHandle_t domain, uint32_t bindScope)</td></tr>
<tr class="memdesc:gad89c5d699ca976a617511ba3cf7f2fdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unbind the permissions object bound to the caller thread.  <br /></td></tr>
<tr class="separator:gad89c5d699ca976a617511ba3cf7f2fdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>See page PAGE_MEMORY. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga1abeb15def646b97b7df002f48c77131" name="ga1abeb15def646b97b7df002f48c77131"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1abeb15def646b97b7df002f48c77131">&#9670;&#160;</a></span>NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE&#160;&#160;&#160;(NVTX_STATIC_CAST(<a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a>, 0))</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>To indicate the full process virtual address space as a heap for functions where a nvtxMemHeapHandle_t is accepted. </p>
<p>The heap by default is always read-write-execute permissions without creating regions. Regions created in this heap have read-write access by default but not execute. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00110">110</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gac61e78dbf1f2c0041d339d218593e6b6" name="gac61e78dbf1f2c0041d339d218593e6b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac61e78dbf1f2c0041d339d218593e6b6">&#9670;&#160;</a></span>NVTX_MEM_HEAP_USAGE_TYPE_LAYOUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_HEAP_USAGE_TYPE_LAYOUT&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This is a heap of memory that has an explicit layout. </p>
<p>The layout could be static or dynamic (calculated). This often represents an algorithm's structures that are packed together. By default this heap is assumed to be accessible for scopes where the memory is naturally accessible by hardware. Regions may be use to further annotate or restrict access. A tool may have an option to be more strict, but special consideration must be made for <code>NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE</code>.</p>
<p>The behavior of this usage is similar to NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE but a tool can use it to track special behaviors and reservation.</p>
<p>Memory in a heap with this usage has read-write permissions by default but not execute without creating regions. Regions created in this heap have the same default permission access. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00134">134</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gabfc4a973ce7aae0f6bc85758491dffb2" name="gabfc4a973ce7aae0f6bc85758491dffb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabfc4a973ce7aae0f6bc85758491dffb2">&#9670;&#160;</a></span>NVTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_HEAP_USAGE_TYPE_SUB_ALLOCATOR&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This heap is a sub-allocator. </p>
<p>Heap created with this usage should not be accessed by the user until regions are registered. Regions from a heap with this usage have read-write access by default but not execute. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00117">117</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga6354421b6134639e6f43674fcc1267d7" name="ga6354421b6134639e6f43674fcc1267d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6354421b6134639e6f43674fcc1267d7">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_FLAGS_NONE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_NONE&#160;&#160;&#160;0x0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00589">589</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gab37b7d7751e95a681f5faa793e8167e9" name="gab37b7d7751e95a681f5faa793e8167e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab37b7d7751e95a681f5faa793e8167e9">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_ATOMIC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_ATOMIC&#160;&#160;&#160;0x4</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Upon binding, with the thread, exclude parent scope atomic RW regions instead of overlaying on top of them. </p>
<p>EX After eliminating any errors from read and write, a developer may chose to ensure that atomics are in their own region, removing standard read/write, and replacing with this strict atomic only access. This way they know that conventional reads or writes will not cause unexpected issues. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00612">612</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga160040e9f3eae923985ca853a8c8b121" name="ga160040e9f3eae923985ca853a8c8b121"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga160040e9f3eae923985ca853a8c8b121">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_READ</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_READ&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Upon binding, with the thread, exclude parent scope read regions instead of overlaying on top of them. </p>
<p>EX After eliminating any errors when applying strict writes, a developer may then choose to annotate and enforce strict reads behaviors in segments of code. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00603">603</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gafc19b9b4a2a897e419b1f3dce50b34a8" name="gafc19b9b4a2a897e419b1f3dce50b34a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafc19b9b4a2a897e419b1f3dce50b34a8">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_WRITE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_FLAGS_STRICT_WRITE&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Upon binding, with the thread, exclude parent scope write regions instead of overlaying on top of them. </p>
<p>EX A developer may chose to first prevent all writes except the ones specified to avoid OOB writes, since there are typically fewer regions written to than read from. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00596">596</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaf34edbf4ff61c7e8ab4d0a6da9153636" name="gaf34edbf4ff61c7e8ab4d0a6da9153636"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf34edbf4ff61c7e8ab4d0a6da9153636">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bind to thread scope. In this case, tools should validate that local thread's execution is honoring the permissions as well as the state of NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE at the time of binding. If this is not bound then NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE should be used to validate the memory. </p>
<p>Not all tools will support every scope, such a GPU sanitizer. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00624">624</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaa2f9d2a62337fac1f9c1b753da2e3977" name="gaa2f9d2a62337fac1f9c1b753da2e3977"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa2f9d2a62337fac1f9c1b753da2e3977">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bind to CUDA stream scope. </p>
<p>In this case, work enqueued to a CUDA stream should be validated by the tool, when it executes, that it respect the permission of the permission at the point of binding, as well as the appropriate nvtxMemCudaGetDevicePermissions at the time of binding. If this is not bound then nvtxMemCudaGetDevicePermissions at the time of stream enqueue should be used to validate the memory.</p>
<p>This could apply to work done either on the GPU like a kernel launch or to CPU based callbacks like cudaStreamAddCallback if the tools supports it.</p>
<p>Binding is applies locally to a CPU thread so that if N CPU threads are enqueuing work to the same stream (like the default stream) that there cannot be a race condition between thread binding vs launching their work. IE users should expect the permissions bound in the thread to be honored by the proceeding work (launches, copies, etc) invoked from in the CPU thread until unbound. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00644">644</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga87975ae01457c1114ebad7dcb4b88c5f" name="ga87975ae01457c1114ebad7dcb4b88c5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga87975ae01457c1114ebad7dcb4b88c5f">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_BIND_SCOPE_UNKNOWN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_BIND_SCOPE_UNKNOWN&#160;&#160;&#160;0x0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00615">615</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga6d2ce0849d6670b3d47d3d75b30625c9" name="ga6d2ce0849d6670b3d47d3d75b30625c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6d2ce0849d6670b3d47d3d75b30625c9">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_ATOMIC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_ATOMIC&#160;&#160;&#160;0x4</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00161">161</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga6070918bf383e5792cb16a01c14398fb" name="ga6070918bf383e5792cb16a01c14398fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6070918bf383e5792cb16a01c14398fb">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00159">159</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gae692c24c1518405de001663d6a9501d1" name="gae692c24c1518405de001663d6a9501d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae692c24c1518405de001663d6a9501d1">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00160">160</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga2837d09d1024664ac71218155c7ee405" name="ga2837d09d1024664ac71218155c7ee405"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2837d09d1024664ac71218155c7ee405">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_CREATE_FLAGS_NONE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_CREATE_FLAGS_NONE&#160;&#160;&#160;0x0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00158">158</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga529a4119f1d3993b26475d561dfffb8d" name="ga529a4119f1d3993b26475d561dfffb8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga529a4119f1d3993b26475d561dfffb8d">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE&#160;&#160;&#160;(NVTX_STATIC_CAST(<a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a>, 0))</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>To indicate you are modifying permissions to the process-wide full virtual address space. </p>
<p>This is a companion object to <code>NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE</code>. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00156">156</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga45057347a87905989c781bfe5ff58740" name="ga45057347a87905989c781bfe5ff58740"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga45057347a87905989c781bfe5ff58740">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_REGION_FLAGS_ATOMIC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_ATOMIC&#160;&#160;&#160;0x4</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The memory is for atomic RW. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00501">501</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga7044cd91b86ad1df236cebbeb60f145a" name="ga7044cd91b86ad1df236cebbeb60f145a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7044cd91b86ad1df236cebbeb60f145a">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_REGION_FLAGS_NONE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_NONE&#160;&#160;&#160;0x0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>There are no permissions for this memory. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00492">492</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga8179ca8c39916932114f24bd8f212368" name="ga8179ca8c39916932114f24bd8f212368"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8179ca8c39916932114f24bd8f212368">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_REGION_FLAGS_READ</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_READ&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The memory is readable. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00495">495</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga9cd2b522932416c8b526d53d9c51ecb6" name="ga9cd2b522932416c8b526d53d9c51ecb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9cd2b522932416c8b526d53d9c51ecb6">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_REGION_FLAGS_RESET</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_RESET&#160;&#160;&#160;0x8</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The memory access permissions are reset for a region. </p>
<p>This is as if never set, rather than documented defaults. As as result any flags indicating how unspecified regions are handle will affect this area.</p>
<p>This should not be used with READ, WRITE, nor ATOMIC, as those flags would have no effect. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00511">511</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga7fbc2145e4b3e4065b430302264beef3" name="ga7fbc2145e4b3e4065b430302264beef3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7fbc2145e4b3e4065b430302264beef3">&#9670;&#160;</a></span>NVTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_PERMISSIONS_REGION_FLAGS_WRITE&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The memory is writable. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00498">498</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaf8eb39d0ca996daab8b02a744d7030da" name="gaf8eb39d0ca996daab8b02a744d7030da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf8eb39d0ca996daab8b02a744d7030da">&#9670;&#160;</a></span>NVTX_MEM_REGION_REF_TYPE_HANDLE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_REGION_REF_TYPE_HANDLE&#160;&#160;&#160;0x2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00413">413</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga6559423352bc401024ecb38775ab5882" name="ga6559423352bc401024ecb38775ab5882"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6559423352bc401024ecb38775ab5882">&#9670;&#160;</a></span>NVTX_MEM_REGION_REF_TYPE_POINTER</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_REGION_REF_TYPE_POINTER&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00412">412</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gad605b53dfb56232e65fbe5e56fb65dae" name="gad605b53dfb56232e65fbe5e56fb65dae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad605b53dfb56232e65fbe5e56fb65dae">&#9670;&#160;</a></span>NVTX_MEM_REGION_REF_TYPE_UNKNOWN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_REGION_REF_TYPE_UNKNOWN&#160;&#160;&#160;0x0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00411">411</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gac19a1d873ae0892b29100597a31d1255" name="gac19a1d873ae0892b29100597a31d1255"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac19a1d873ae0892b29100597a31d1255">&#9670;&#160;</a></span>NVTX_MEM_TYPE_VIRTUAL_ADDRESS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NVTX_MEM_TYPE_VIRTUAL_ADDRESS&#160;&#160;&#160;0x1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Standard process userspace virtual addresses for linear allocations. </p>
<p>APIs that map into this space, such as CUDA UVA should use this type.</p>
<p>Relevant functions: cudaMalloc, cudaMallocManaged, cudaHostAlloc, cudaMallocHost NVTX_MEM_HEAP_HANDLE_PROCESS_WIDE is supported</p>
<p>nvtxMemHeapRegister receives a heapDesc of type nvtxMemVirtualRangeDesc_t </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00147">147</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga867aaad21c9b037b83689d9635f03ebd" name="ga867aaad21c9b037b83689d9635f03ebd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga867aaad21c9b037b83689d9635f03ebd">&#9670;&#160;</a></span>nvtxMemHeapDesc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_v1</a> <a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00297">297</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga7fc8355410f6b30baebc184d29fa21f4" name="ga7fc8355410f6b30baebc184d29fa21f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7fc8355410f6b30baebc184d29fa21f4">&#9670;&#160;</a></span>nvtxMemHeapHandle_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef nvtxMemHeap_t* <a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A handle returned by a tool to represent a memory heap. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00173">173</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga1c092ef2b3b68bf29bc1e2295e7b3233" name="ga1c092ef2b3b68bf29bc1e2295e7b3233"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1c092ef2b3b68bf29bc1e2295e7b3233">&#9670;&#160;</a></span>nvtxMemPermissionsAssignBatch_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_permissions_assign_batch__v1.html">nvtxMemPermissionsAssignBatch_v1</a> <a class="el" href="structnvtx_mem_permissions_assign_batch__v1.html">nvtxMemPermissionsAssignBatch_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00539">539</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaa872dd921b4d004f4be7e444062d706a" name="gaa872dd921b4d004f4be7e444062d706a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa872dd921b4d004f4be7e444062d706a">&#9670;&#160;</a></span>nvtxMemPermissionsAssignRegionDesc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_permissions_assign_region_desc__v1.html">nvtxMemPermissionsAssignRegionDesc_v1</a> <a class="el" href="structnvtx_mem_permissions_assign_region_desc__v1.html">nvtxMemPermissionsAssignRegionDesc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00521">521</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga421ec4c6d96c342008aa3d04906643f0" name="ga421ec4c6d96c342008aa3d04906643f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga421ec4c6d96c342008aa3d04906643f0">&#9670;&#160;</a></span>nvtxMemPermissionsHandle_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef nvtxMemPermissions_t* <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A handle returned by a tool to represent a memory permissions mask. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00204">204</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gabc058b02998bde14517ea665f62495e0" name="gabc058b02998bde14517ea665f62495e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabc058b02998bde14517ea665f62495e0">&#9670;&#160;</a></span>nvtxMemRegionHandle_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef nvtxMemRegion_t* <a class="el" href="group___m_e_m_o_r_y.html#gabc058b02998bde14517ea665f62495e0">nvtxMemRegionHandle_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A handle returned by a tool to represent a memory region. </p>

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00184">184</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gadc3d8fcd45db93799065cde47c1e81e5" name="gadc3d8fcd45db93799065cde47c1e81e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadc3d8fcd45db93799065cde47c1e81e5">&#9670;&#160;</a></span>nvtxMemRegionNameDesc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_region_name_desc__v1.html">nvtxMemRegionNameDesc_v1</a> <a class="el" href="structnvtx_mem_region_name_desc__v1.html">nvtxMemRegionNameDesc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00468">468</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gad832c4d41d8348b2b9994f0d57813aae" name="gad832c4d41d8348b2b9994f0d57813aae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad832c4d41d8348b2b9994f0d57813aae">&#9670;&#160;</a></span>nvtxMemRegionsNameBatch_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_regions_name_batch__v1.html">nvtxMemRegionsNameBatch_v1</a> <a class="el" href="structnvtx_mem_regions_name_batch__v1.html">nvtxMemRegionsNameBatch_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00483">483</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaeb217715fd36841ea0ba6ded10c72d56" name="gaeb217715fd36841ea0ba6ded10c72d56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeb217715fd36841ea0ba6ded10c72d56">&#9670;&#160;</a></span>nvtxMemRegionsRegisterBatch_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_regions_register_batch__v1.html">nvtxMemRegionsRegisterBatch_v1</a> <a class="el" href="structnvtx_mem_regions_register_batch__v1.html">nvtxMemRegionsRegisterBatch_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00363">363</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaaa84a28e93d7b1725a3f513bc277e828" name="gaaa84a28e93d7b1725a3f513bc277e828"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaa84a28e93d7b1725a3f513bc277e828">&#9670;&#160;</a></span>nvtxMemRegionsResizeBatch_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_regions_resize_batch__v1.html">nvtxMemRegionsResizeBatch_v1</a> <a class="el" href="structnvtx_mem_regions_resize_batch__v1.html">nvtxMemRegionsResizeBatch_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00402">402</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="gaa2bb003e73110c8c1889ae32d06adf5a" name="gaa2bb003e73110c8c1889ae32d06adf5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa2bb003e73110c8c1889ae32d06adf5a">&#9670;&#160;</a></span>nvtxMemRegionsUnregisterBatch_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_v1</a> <a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00445">445</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<a id="ga7722d1f9cca078acc29dafbdc5f598de" name="ga7722d1f9cca078acc29dafbdc5f598de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7722d1f9cca078acc29dafbdc5f598de">&#9670;&#160;</a></span>nvtxMemVirtualRangeDesc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structnvtx_mem_virtual_range_desc__v1.html">nvtxMemVirtualRangeDesc_v1</a> <a class="el" href="structnvtx_mem_virtual_range_desc__v1.html">nvtxMemVirtualRangeDesc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="nv_tools_ext_mem_8h_source.html#l00212">212</a> of file <a class="el" href="nv_tools_ext_mem_8h_source.html">nvToolsExtMem.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga6c059f5891bb02717a7453947b6a459a" name="ga6c059f5891bb02717a7453947b6a459a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c059f5891bb02717a7453947b6a459a">&#9670;&#160;</a></span>nvtxMemHeapRegister()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC <a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a> NVTX_API nvtxMemHeapRegister </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnvtx_mem_heap_desc__v1.html">nvtxMemHeapDesc_t</a> const *&#160;</td>
          <td class="paramname"><em>desc</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a memory heap to represent a object or range of memory that will be further sub-divided into regions. </p>
<p>The handle used to address the heap will depend on the heap's type. Where the heap is virtual memory accessible, the address of the heap's memory itself is its handle. This will likewise be returned from the function.</p>
<p>For more advanced types, where the heap is not virtual memory accessible the tools may be responsible for returning a void const * that that uniquely identifies the object. Please see the description of each heap type for more details on whether this is expected to be a uniquely generated by the tool or otherwise. </p>

</div>
</div>
<a id="ga38b92bad53d38a16b27efc9b36dc4594" name="ga38b92bad53d38a16b27efc9b36dc4594"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga38b92bad53d38a16b27efc9b36dc4594">&#9670;&#160;</a></span>nvtxMemHeapReset()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC void NVTX_API nvtxMemHeapReset </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___m_e_m_o_r_y.html#ga7fc8355410f6b30baebc184d29fa21f4">nvtxMemHeapHandle_t</a>&#160;</td>
          <td class="paramname"><em>heap</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reset the memory heap wipes out any changes, as if it were a fresh heap. </p>
<p>This includes invalidating all regions and their handles. </p>

</div>
</div>
<a id="ga590cf0b684dee2f60df844163b48efe9" name="ga590cf0b684dee2f60df844163b48efe9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga590cf0b684dee2f60df844163b48efe9">&#9670;&#160;</a></span>nvtxMemPermissionsBind()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsBind </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a>&#160;</td>
          <td class="paramname"><em>permissions</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>bindScope</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>bindFlags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bind the permissions object into a particular scope on the caller thread. </p>
<p>Permissions do not take affect until binding. Binding permissions is a thread local activity that overrides global behaviors. This is to avoid multi-threaded race conditions,</p>
<p>The scope dictates what type of processing it applies to, and when in some cases. EX1: NVTX_MEM_PERMISSIONS_BIND_SCOPE_CPU_THREAD applies to CPU code accessing memory while bound. EX2: NVTX_MEM_PERMISSIONS_BIND_SCOPE_CUDA_STREAM applies to CUDA streams, and the permissions must be recorded and applied when the work in the stream dequeues to executes. In this case it could be GPU or CPU, if the tool support both.</p>
<p>Bind can be called again on the same object and thread to take any updates to the specified permission object or the inherited properties.</p>
<p>Bind flags support changing how the binding process inherits region access control. In the case of thread scope this is NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE and from CUDA_STREAM this is nvtxMemCudaGetDevicePermissions. Choosing stricter modes allows the user to further reduce the access with less work, since memory by default, behaves as natural until the NVTX annotations instructs a tool to treat it anther way. See strict flags for more details.</p>
<p>Also see nvtxMemPermissionsUnbind </p>

</div>
</div>
<a id="ga1f855ed95bf9473f6e53d1faf1fc247e" name="ga1f855ed95bf9473f6e53d1faf1fc247e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1f855ed95bf9473f6e53d1faf1fc247e">&#9670;&#160;</a></span>nvtxMemPermissionsCreate()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC <a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a> NVTX_API nvtxMemPermissionsCreate </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>creationflags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a permissions object for fine grain thread-local control in multi-threading scenarios. </p>
<p>Unlike the global permissions object (NVTX_MEM_PERMISSIONS_HANDLE_PROCESS_WIDE), a new permissions object is empty. There are no regions registered to it, so more memory is accessible if bound(bind) without calls to nvtxMemPermissionsSetAccess* first. The permissions are not active until nvtxMemPermissionsBind. See <code>nvtxMemPermissionsBind</code> for more details.</p>
<p>Use the flags NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_* to control how the regions in this permission object will interact with global permissions when bound. You may choose to either replace global memory regions setting or overlay on top of them. The most common uses are as follows:</p><ul>
<li>To limit tools to validate writing exclusively specified in this object but inherit all global read access regions use <code>NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE</code></li>
<li>To limit tools to validate both read &amp; write permissions exclusively specified in this object use NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_READ &amp; NVTX_MEM_PERMISSIONS_CREATE_FLAGS_EXCLUDE_GLOBAL_WRITE</li>
</ul>
<p>Also see <code>nvtxMemPermissionsBind</code> &amp; <code>nvtxMemPermissionsSetAccess*</code>. </p>

</div>
</div>
<a id="ga7494b21c8738c23941222432134e35d3" name="ga7494b21c8738c23941222432134e35d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7494b21c8738c23941222432134e35d3">&#9670;&#160;</a></span>nvtxMemPermissionsDestroy()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsDestroy </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___m_e_m_o_r_y.html#ga421ec4c6d96c342008aa3d04906643f0">nvtxMemPermissionsHandle_t</a>&#160;</td>
          <td class="paramname"><em>permissionsHandle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destroy the permissions object. </p>
<p>If bound(bind), destroy will also unbind it. </p>

</div>
</div>
<a id="gad89c5d699ca976a617511ba3cf7f2fdc" name="gad89c5d699ca976a617511ba3cf7f2fdc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad89c5d699ca976a617511ba3cf7f2fdc">&#9670;&#160;</a></span>nvtxMemPermissionsUnbind()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC void NVTX_API nvtxMemPermissionsUnbind </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>bindScope</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unbind the permissions object bound to the caller thread. </p>
<p>Upon unbind, the thread local permissions for a scope are restored to the default behavior defined by the scope. </p>

</div>
</div>
<a id="ga040347db8e2035482a74bcdf5ee25bb0" name="ga040347db8e2035482a74bcdf5ee25bb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga040347db8e2035482a74bcdf5ee25bb0">&#9670;&#160;</a></span>nvtxMemRegionsUnregister()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NVTX_DECLSPEC void NVTX_API nvtxMemRegionsUnregister </td>
          <td>(</td>
          <td class="paramtype">nvtxDomainHandle_t&#160;</td>
          <td class="paramname"><em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnvtx_mem_regions_unregister_batch__v1.html">nvtxMemRegionsUnregisterBatch_t</a> const *&#160;</td>
          <td class="paramname"><em>desc</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregistration for regions of process virtual memory. </p>
<p>This is not necessary if the nvtx heap destroy function has been called that contains this object. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
